use crate::addrspace::PfnAddr;
use crate::addrspace::PhysAddr;
use crate::addrspace::VirtKsymAddr;
use crate::addrspace::VirtLmAddr;
use crate::page::Page;

impl Page {
    #[inline(always)]
    pub(super) fn arch_page_to_pfn(&self) -> PfnAddr {
        unreachable!();
    }

    #[inline(always)]
    fn page_to_voff(&self) -> usize {
        unreachable!();
    }

    #[inline(always)]
    pub(super) fn arch_page_to_virtlm(&self) -> VirtLmAddr {
        unreachable!();
    }
}

impl PfnAddr {
    #[inline(always)]
    pub(super) fn arch_pfn_to_page(&self) -> &'static Page {
        unreachable!();
    }

    #[inline(always)]
    pub(super) fn arch_pfn_to_page_mut(&self) -> &'static mut Page {
        unreachable!();
    }

    #[inline(always)]
    pub(super) fn arch_pfn_to_phys(&self) -> PhysAddr {
        unreachable!();
    }
}

impl PhysAddr {
    #[inline(always)]
    pub(super) fn arch_phys_to_virtksym(&self) -> VirtKsymAddr {
        unreachable!();
    }

    #[inline(always)]
    pub(super) fn arch_phys_to_virtlm(&self) -> VirtLmAddr {
        unreachable!();
    }

    #[inline(always)]
    pub(super) fn arch_phys_to_pfn(&self) -> PfnAddr {
        unreachable!();
    }

    #[inline(always)]
    pub(crate) fn arch_phys_to_pfn_up(&self) -> PfnAddr {
        unreachable!();
    }

    #[inline(always)]
    pub(crate) fn arch_phys_to_pfn_down(&self) -> PfnAddr {
        unreachable!();
    }
}

impl VirtKsymAddr {
    #[inline(always)]
    pub(super) fn arch_virtksym_to_phys(&self) -> PhysAddr {
        unreachable!();
    }
}

impl VirtLmAddr {
    #[inline(always)]
    pub(super) fn arch_virtlm_to_phys(&self) -> PhysAddr {
        unreachable!();
    }

    #[inline(always)]
    pub(super) fn arch_virtlm_to_page(&self) -> &'static Page {
        unreachable!();
    }

    #[inline(always)]
    pub(super) fn arch_virtlm_to_page_mut(&self) -> &'static mut Page {
        unreachable!();
    }
}
